iT邦幫忙

2023 iThome 鐵人賽

DAY 9
2
Web 3

淺談ZK Rollup系列 第 9

Day 09 - 零知識證明SP04:同態隱藏應用

  • 分享至 

  • xImage
  •  

上一篇講述了什麼是同態隱藏,如果還沒看過的,可以點這邊觀看,那我們就繼續對探討同態隱藏。

同態隱藏的同態

基本上擁有同態隱藏特性的函數https://chart.googleapis.com/chart?cht=tx&chl=%24f(x)%24通常擁有同態的特性只會有加法同態,或者是乘法同態,要找到兩者都符合同態的同態隱藏函數非常困難,如果條件放到找到擁有全部運算的同態隱藏函數那根本不可能,如果你找到了,基本上就可以預定下一屆菲爾茲獎了,因為這樣對人類的貢獻肯定超級大;但普遍上來講,同態隱藏函數多數都是用到加法同態,而當需要用到乘法,會用其他的方式去進行補齊,但伴隨而來的效果是會有一定的限制,但秉持著淺談的原則,我對於同態隱藏的概念便帶到這裡,如果想去深究的,建議可以看看別人寫的文章進行研究。
https://cdn-icons-png.flaticon.com/512/1739/1739515.png

應用

那麼當我們找到了一個具有加法同態隱藏特性的函數https://chart.googleapis.com/chart?cht=tx&chl=%24f(x)%24時,我們能拿他來做什麼呢?基本上就是用來做加法以及隱藏,想一想日常生活中會有什麼時候會用到加法呢?老實說,真的蠻多地方會使用到加法,光是交易,可能就會用到大量的加法,如果我們這時候加點隱藏會發生什麼事情呢?我們就可以提出簡單的零知識證明了喔!真的假的?那我們來試試看!
我這邊就提出一個簡單的例子,我們先把情況做相當程度的簡化,在房地產方面要申請貸款時,常常會要我們提出財力證明,假設今天有一對夫妻,他們想要提出他們擁有足夠的財力可以購買某間房屋,但是他們又不想讓貸款方知道他們各自擁有多少存款,那該怎麼辦呢?很簡單這時候這個擁有加法同態隱藏特性的函數https://chart.googleapis.com/chart?cht=tx&chl=%24f(x)%24便可以發揮它的功效了!
https://cdn-icons-png.flaticon.com/512/5988/5988246.png
假設夫妻他們的共同財產總額是https://chart.googleapis.com/chart?cht=tx&chl=%2418000k%24,那麼他們的財力證明可以這麼搞,首先他們可以去各自所在的銀行,要銀行將他們的存款帶入https://chart.googleapis.com/chart?cht=tx&chl=%24f(x)%24,假設他們的存款分別是https://chart.googleapis.com/chart?cht=tx&chl=%24a%24https://chart.googleapis.com/chart?cht=tx&chl=%24b%24,所以他們會得到https://chart.googleapis.com/chart?cht=tx&chl=%24f(a)%24https://chart.googleapis.com/chart?cht=tx&chl=%24f(b)%24兩個數,同時間,他們也要將https://chart.googleapis.com/chart?cht=tx&chl=%2418000k%24帶入https://chart.googleapis.com/chart?cht=tx&chl=%24f(x)%24得到https://chart.googleapis.com/chart?cht=tx&chl=%24f(18000k)%24這個數字,之後他們便將https://chart.googleapis.com/chart?cht=tx&chl=%24f(a)%24https://chart.googleapis.com/chart?cht=tx&chl=%24f(b)%24https://chart.googleapis.com/chart?cht=tx&chl=%2418000k%24https://chart.googleapis.com/chart?cht=tx&chl=%24f(18000k)%24四個數字當作是證明交給貸款方,而貸款方只要確認兩件事情就好。

  1. 確認將https://chart.googleapis.com/chart?cht=tx&chl=%2418000k%24帶入https://chart.googleapis.com/chart?cht=tx&chl=%24f(x)%24是否為https://chart.googleapis.com/chart?cht=tx&chl=%24f(18000k)%24
  2. 接著確認https://chart.googleapis.com/chart?cht=tx&chl=%24f(a)%24https://chart.googleapis.com/chart?cht=tx&chl=%24f(b)%24相加是否為https://chart.googleapis.com/chart?cht=tx&chl=%24f(18000k)%24

當兩件事情確認完畢,因為https://chart.googleapis.com/chart?cht=tx&chl=%24f(x)%24具有同態特性,所以https://chart.googleapis.com/chart?cht=tx&chl=%24f(a)%2Bf(b)%3Df(a%2Bb)%3Df(18000k)%24,因此貸款方便可以確認這對夫妻雙方的資產總和確實為https://chart.googleapis.com/chart?cht=tx&chl=%2418000k%24,於此同時,因為https://chart.googleapis.com/chart?cht=tx&chl=%24f(x)%24具有隱藏特性,因此貸款方無法從https://chart.googleapis.com/chart?cht=tx&chl=%24f(a)%24https://chart.googleapis.com/chart?cht=tx&chl=%24f(b)%24兩個數推回去原本夫妻兩人的存款https://chart.googleapis.com/chart?cht=tx&chl=%24a%24https://chart.googleapis.com/chart?cht=tx&chl=%24b%24,也就不曉得買方兩人個別的存款,這便是同態隱藏能做到的應用,那麼這個是零知識證明嗎?看起來是,但實際上不是,有看過我這篇文章的朋友們便知道,這個題目並不符合零知識證明的命題,為什麼呢?因為他並不符合 「很難被解出」 ,基本上貸款方只要將https://chart.googleapis.com/chart?cht=tx&chl=%240%24https://chart.googleapis.com/chart?cht=tx&chl=%2418000k%24依序帶入https://chart.googleapis.com/chart?cht=tx&chl=%24f(x)%24函數,便可以知曉夫妻雙方財產的真實金額,除非是一方有負債,那麼這個題目真的就符合零知識證明的命題了,因為這樣搜索域便從負無限大到正無限大,但不管,這只是用同態隱藏來做一個小小的零知識證明的例子。那麼接下來便要來帶大家看到底怎麼用同態隱藏怎麼來解決交互式零知識證明的缺點,那麼我們明天見!


上一篇
Day 08 - 零知識證明SP03:同態隱藏
下一篇
Day 10 - 零知識證明EP06:非交互式零知識證明
系列文
淺談ZK Rollup30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言